package com.erp.erp_dao.warehouse;

import com.erp.erp_entitys.warehouse.entity.TransferDetailEntity;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 调拨明细表(TransferDetail)表数据库访问层
 *
 * @author lst
 * @since 2020-07-31 13:29:32
 */
public interface ITransferDetailDao {


    /**
     * 通过实体作为筛选条件查询
     *
     * @param transferDetail 实例对象
     * @return 对象列表
     */
    List<TransferDetailEntity> queryAll(TransferDetailEntity transferDetail);

    /**
     * 新增数据
     *
     * @param transferDetail 实例对象
     * @return 影响行数
     */
    int insert(TransferDetailEntity transferDetail);


    /**
     * 调拨明细批量新增
     * @param list 新增调拨集合
     * @return 影响行数
     */
    int insertTransferDetailList(List<TransferDetailEntity> list);

    /**
     * 修改数据
     *
     * @param transferDetail 实例对象
     * @return 影响行数
     */
    int update(TransferDetailEntity transferDetail);

    /**
     * 通过调拨明细id获取调拨明细对象
     * @param id 调拨明细id
     * @return 调拨明细对象
     */
    TransferDetailEntity getTransferDetailById(Integer id);

    /**
     * 通过库存id获取调拨明细对象
     * @param stockId 库存id
     * @return 调拨明细对象集合
     */
    List<TransferDetailEntity> getTransferDetailByStockId(Integer stockId);

    /**
     * 获取调拨明细
     * @param transferDetail 查询条件
     * @return 调拨明细
     */
    List<TransferDetailEntity> getTransferDetail(TransferDetailEntity transferDetail);


    /**
     * 根据外销合同号获取调拨已用数量
     * @param concatNo 外销合同号
     * @return 调拨已用数量
     */
    BigDecimal getTransferQuantityByConcatNo(@Param("concatNo") String concatNo);
}